#include <iostream>
#include <sstream>
#include <cmath>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "../Util/Configuracion.h"

using namespace std;

#ifndef CLAVE_H_
#define CLAVE_H_

/*
 * Abstracción de la clave Cualquier otra clase puede heredar de Dato, y redefinir
 * el método toChar(serializar) y getTamanio. Por comodidad y utilidad, la clase no es abstracta y
 * tiene una implementación básica: es un contenedor de una cadena de bytes.
 */

class Clave{
public:
	Clave();
	virtual char* toChar();
	virtual bool operator==(Clave&);
	virtual bool operator>=(const Clave&);
	virtual bool operator<=(const Clave&);
	virtual bool operator>(const Clave&);
	virtual bool operator<(const Clave&);
	virtual unsigned int getTamanio();
	virtual char getTipo();
	virtual string mostrar();
	virtual ~Clave();
protected:
	unsigned int tamanio;
	char tipo;
};

#endif /* CLAVE_H_ */
